﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using HtmlAgilityPack;

namespace WEATHER.Components
{
    public enum HydrologicForecastWeatherType
    {
        /// <summary>
        /// Dự báo hạn ngắn - Hệ thống sông Bắc Bộ
        /// </summary>
        DBHN_SongBacBo,         
        /// <summary>
        /// Dự báo hạn ngắn - Hệ thống sông Trung và Nam Bộ
        /// </summary>
        DBHN_SongTrungVaNamBo,
        /// <summary>
        /// Dự báo hạn vừa - Hệ thống sông Bắc Bộ
        /// </summary>
        DBHV_SongBacBo,
        /// <summary>
        /// Dự báo hạn vừa - Hệ thống sông Trung và Nam Bộ
        /// </summary>  
        DBHV_SongTrungVaNamBo,
        /// <summary>
        /// Dự báo tháng - Hệ thống sông Bắc Bộ
        /// </summary>
        DBT_SongBacBo,
        /// <summary>
        /// Dự báo tháng - Hệ thống sông Trung và Nam Bộ
        /// </summary>  
        DBT_SongTrungVaNamBo,
        /// <summary>
        /// Dự báo mùa - Hệ thống sông Bắc Bộ
        /// </summary>
        DBM_SongBacBo,
        /// <summary>
        /// Dự báo mùa - Hệ thống sông Trung và Nam Bộ
        /// </summary>  
        DBM_SongTrungVaNamBo
    }

    public class HydrologicForecast
    {
        public static string GetWeatherOffline(Guid moduleID, HydrologicForecastWeatherType weatherType)
        {
            string result = "Không lấy được dữ liệu";
            //Lấy dữ liệu từ database
            DataSet ds = Item.SelectTopBy_WeatherType(moduleID, weatherType.ToString(), 1);
            if (ds.Tables[0].Rows.Count > 0)
            {
                result = ds.Tables[0].Rows[0]["HtmlContent"].ToString();
            }
            return result;
        }

        public static string GetWeatherOnline(Guid moduleID, HydrologicForecastWeatherType weatherType)
        {
            string htmlContent = GetWeatherOffline(moduleID, weatherType);
            try
            {
                // Lấy dữ liệu từ website http://www.nchmf.gov.vn/
                string url;
                int type;
                string weathertitle;

                switch (weatherType)
                {
                    case HydrologicForecastWeatherType.DBHN_SongBacBo:
                        url = "http://www.nchmf.gov.vn/website/vi-VN/79/12/Default.aspx";
                        type = 1;
                        weathertitle = "Thủy văn - Dự báo hạn ngắn - Sông Bắc Bộ";
                        break;
                    case HydrologicForecastWeatherType.DBHN_SongTrungVaNamBo:
                        url = "http://www.nchmf.gov.vn/website/vi-VN/80/13/Default.aspx";
                        type = 1;
                        weathertitle = "Thủy văn - Dự báo hạn ngắn - Sông Trung và Nam Bộ";
                        break;
                    default:
                        type = 0;
                        url = string.Empty;
                        weathertitle = string.Empty;
                        break;
                }

                HtmlWeb web = new HtmlWeb();
                string result = "";
                if (type == 1)
                {
                    HtmlDocument document = web.Load(url);
                    HtmlNode title = document.DocumentNode.SelectSingleNode("//td[@class='TitleNews_Special']");

                    result += "<div id='titleMeteor'>";
                    result += title.InnerHtml;
                    result += "<br /><br />";

                    HtmlNode subTitle = document.DocumentNode.SelectSingleNode("//td[@class='SubTitleNews_Special']");
                    result += "<span class='subtitleMeteor'>" + subTitle.InnerHtml + "</span>";
                    result += "<br /><br />";
                    result += "</div>";

                    HtmlNode desc = document.DocumentNode.SelectSingleNode("//table[@id='_ctl1__ctl1__ctl0_dl_Bantindubao']");

                    result += desc.OuterHtml;
                    result = result.Replace("src=\"/", "src=\"http://www.nchmf.gov.vn/");
                }
                else
                {
                    HtmlDocument document = web.Load(url);
                    HtmlNode title = document.DocumentNode.SelectSingleNode("//td[@class='TitleNews_Special']");

                    result += "<div id='Meteor'>";
                    result += "<span class='title'>" + title.InnerHtml + "</span>";

                    HtmlNode SummryNews = document.DocumentNode.SelectSingleNode("//td[@class='SummryNews']");
                    result += SummryNews.InnerHtml;
                    result += "<br /><br />";

                    HtmlNode desc = document.DocumentNode.SelectSingleNode("//td[@class='ContentNews']");

                    result += desc.OuterHtml;
                    result = result.Replace("src=\"/", "src=\"http://www.nchmf.gov.vn/");
                    result += "</div>";
                }

                result = HttpUtility.HtmlEncode(result);
                //Lưu vào database 
                if (htmlContent != result)
                {
                    Item item = new Item();
                    item.ModuleID = moduleID;
                    item.Title = weathertitle;
                    item.WeatherType = weatherType.ToString();
                    item.HtmlContent = result;
                    item.CreatedDate = DateTime.Now;
                    item.CreatedBy = "weather@asp.net.vn";
                    item.Insert();
                    htmlContent = result;
                }
            }
            catch (Exception)
            {

            }

            return htmlContent;
        }
    }
}
